extension StringPhone on String {
  String get phone {
    var _mobile = this;
    if (_mobile.length > 4) {
      var sufixLength = (_mobile.length - 4) ~/ 2;
      var prefixLength = _mobile.length - 4 - sufixLength;
      return _mobile.substring(0, prefixLength) +
          '****' +
          _mobile.substring(_mobile.length - sufixLength, _mobile.length);
    } else {
      return _mobile;
    }
  }
}

///大陆手机号码11位数，匹配格式：前三位固定格式+后8位任意数
/// 此方法中前三位格式有：
/// 13+任意数 * 15+除4的任意数 * 18+除1和4的任意数 * 17+除9的任意数 * 147
bool isPhoneLegal(String str) {
  return RegExp(
          '^((13[0-9])|(15[^4])|(166)|(17[0-8])|(18[0-9])|(19[8-9])|(147,145))\\d{8}\$')
      .hasMatch(str);
}

extension BaseTransfer on dynamic {
  int get toInt {
    return int.tryParse(this) ?? -1;
  }
}
